"""
回合制对战游戏
创建角色：名字,性别,血量,装备,(房间)。行为--战斗
创建房间：名字,成员。行为--角色可以加入房间，房间内的人可以互打，房间上限2人
装备-防弹衣，血量默认100，正常被攻击-10滴血，有防弹衣-5滴血
主函数：菜单--1、创建房间。2、加入房间。
"""
import random
import time


class Role(object):
    def __init__(self, name, sex, equip, hp=100, room=None):
        self.name = name
        self.sex = sex
        self.equip = equip
        self.hp = 100
        self.room = room

    @classmethod
    def register(cls):
        name = input("请输入你的名字:")
        sex = input("请输入你的性别:")
        equip = int(input("需要购买防弹衣装备请键入1,否则键入0:"))
        role = Role(name, sex, equip)
        return role

    def attack(self, enemy):
        if self.room == enemy.room:
            if enemy.equip == 0:
                enemy.hp -= 10
                print('玩家%s被攻击了，-10滴血' % enemy.name)
            else:
                enemy.hp -= 5
                print('玩家%s被攻击了，-5滴血' % enemy.name)
        else:
            print("当前攻击目标与您不在同一房间,不允许跨房间攻击")


class Room(object):
    def __init__(self, id, remeber1, remeber2=None):
        self.id = id
        self.remeber1 = remeber1
        self.remeber2 = remeber2

    @classmethod
    def create(cls, remeber1):
        n = ''.join(random.sample('0123456789', 4))
        id = 'room' + n
        room = Room(id, remeber1)
        remeber1.room = id
        print("房间%s已创建成功，等待对手加入！" % id)
        return room

    def join(self, role):
        if self.remeber2 is None:
            self.remeber2 = role
            role.room = self.id
        else:
            print("该房间人员已满！")

    def initialize(self):
        self.remeber1.hp, self.remeber2.hp = 100, 100

    def battle(self):
        while self.remeber1.hp > 0 and self.remeber2.hp > 0:
            battle = random.randint(0, 1)
            print(battle)
            if battle == 1:
                self.remeber1.attack(self.remeber2)
                print('玩家 %s 还剩下 %s 的血量,玩家 %s 还剩下 %s 的血量' % (self.remeber1.name, self.remeber1.hp, self.remeber2.name, self.remeber2.hp))
                time.sleep(1)
            else:
                self.remeber2.attack(self.remeber1)
                print('玩家 %s 还剩下 %s 的血量,玩家 %s 还剩下 %s 的血量' % (self.remeber1.name, self.remeber1.hp, self.remeber2.name, self.remeber2.hp))
                time.sleep(1)
        else:
            if self.remeber1.hp > self.remeber2.hp:
                print("游戏结束,玩家 %s 获胜" % self.remeber1.name)
            else:
                print("游戏结束,玩家 %s 获胜" % self.remeber2.name)


# 业务逻辑
print("输入1号玩家信息")
myrole = Role.register()
print("输入2号玩家信息")
role2 = Role.register()

print("欢迎进入游戏！！！")
while True:
    choice = input("""请选择您的操作:
    1.创建房间
    2.加入房间
    3.退出
    """)
    if choice == '1':
        room = Room.create(myrole)
    elif choice == '2':
        roomid = input("请输入房间号:")
        if roomid == room.id:
            room.join(role2)
            print("成功加入房间,即将开始对战")
            room.initialize()
            room.battle()
            while True:
                next = int(input("""请选择下一步操作:
                1.再来一局
                2.退出该房间
                """))
                if next == 1:
                    room.initialize()
                    room.battle()
                elif next == 2:
                    break
                else:
                    print("输入有误!!!!")
        else:
            print("该房间号不存在")
    elif choice == '3':
        print("欢迎下次使用")
        break
    else:
        print("输入有误！！！！")